package com.tangruojie.config;

import org.springframework.web.filter.CharacterEncodingFilter;
import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;

import javax.servlet.Filter;

public class ServletContainersInitConfig extends AbstractAnnotationConfigDispatcherServletInitializer {
    @Override
    protected Class<?>[] getRootConfigClasses() {
        return new Class[0];
    }

    /**
     * 这里只是“register class” —— 这一步只把它注册为配置类，而不是 Bean！
     * 重点来了：
     * 如果 SpringMvcConfig 里面写了 @ComponentScan，它就会扫描到自身和其他的 Bean 并注册，自己也就作为 @Configuration 成为了 Bean；
     * 如果 SpringMvcSupport 是一个独立类，并且没有被 @ComponentScan 扫描，那它就不会被注册为 Bean，尽管它已经传进来了。
     *
     * @return
     */
    @Override
    protected Class<?>[] getServletConfigClasses() {
        return new Class[]{SpringMvcConfig.class};
    }

    @Override
    protected String[] getServletMappings() {
        return new String[]{"/"};
    }

    @Override
    protected Filter[] getServletFilters() {
        CharacterEncodingFilter characterEncodingFilter = new CharacterEncodingFilter();
        characterEncodingFilter.setEncoding("UTF-8");
        return new Filter[]{characterEncodingFilter};
    }
}
